from dotenv import load_dotenv
import os
import dashscope
load_dotenv('../../.env')

import pdfplumber

# 指定PDF文件路径
pdf_path = '../source_files/Redis设计与实现 (黄健宏) (Z-Library).pdf'

# 遍历每一页
# 打开PDF文件
with pdfplumber.open(pdf_path) as pdf:
    # 遍历PDF的每一页
    for i, page in enumerate(pdf.pages):
        if i == 17:
            # 使用to_image()方法将页面转换为图像
            image = page.to_image(resolution=150)  # 可以设置分辨率
            path_img = f'page_{i+1}.png'
            # 保存图像
            image.save(path_img, 'PNG')  # 保存为PNG格式

            messages = [
                {
                    "role": "user",
                    "content": [
                        {"image": path_img},
                        {"text": "提取出图片中的文字，原文提取，不需要强加其他描述。如果有未能准确识别的文字，则需要根据上下文适当补充。**注意：**可能还会包含其他非文字信息，根据上下文排除他们，并且遵循原文的英文字母大小写，汉字简体繁体情况。结合图片的布局格式，合理使用Markdown输出："}
                    ]
                }
            ]
            responses = dashscope.MultiModalConversation.call(
                # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx",
                api_key=os.getenv('DASHSCOPE_API_KEY'),
                model='qwen-vl-plus',
                messages=messages,
                stream = True,
                incremental_output = True
            )
            for response in responses:
                print(response["output"]['choices'][0]['message']['content'][0]['text'], end='')
            break